package org.jeecg.modules.demo.com.kunpeng.mapper;

import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.com.kunpeng.entity.Project;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.demo.com.kunpeng.vo.CustomerInNameListVO;
import org.jeecg.modules.demo.com.kunpeng.vo.ProjectDate;
import org.jeecg.modules.demo.com.kunpeng.vo.ProjectListQueryVO;
import org.jeecg.modules.demo.com.kunpeng.vo.ProjectStandardVO;
import org.springframework.stereotype.Repository;

/**
 * @Description: 项目表
 * @Author: jeecg-boot
 * @Date:   2022-12-03
 * @Version: V1.0
 */
@Repository
public interface ProjectMapper extends BaseMapper<Project> {

    List<ProjectListQueryVO> listByKeyWords(Page<ProjectListQueryVO> page,@Param("agreementId")String agreementId,@Param("executionStatus")String executionStatus,
                                            @Param("customerName")String customerName,@Param("projectName")String projectName,@Param("responsibilityPerson")String responsibilityPerson,
                                            @Param("keyWords")String keyWords);


    /**
     * 根据项目id查询项目详情
     * @param projectId
     * @return
     */
    ProjectStandardVO selectByProjectId(String projectId);

    /**
     * 根据项目名称查询项目详情
     * @param projectName
     * @return
     */
    ProjectStandardVO selectByProjectName(String projectName);

    /**
     * 获取客户列表
     * @return
     */
    List<CustomerInNameListVO> customerList();

    /**
     * 根据项目id查询项目详情表起始时间
     * @param projectId
     * @return
     */
    List<ProjectDate> selectProjectDetailsDate(String projectId);

    /**
     * 根据id修改执行状态
     * @param id
     * @param executionStatus
     * @return
     */
    int updateExecutionStatusById(String id,String executionStatus);

    /**
     * 根据项目id获取项目名称
     * @param projectId
     * @return
     */
    String selectProjectNameByProjectId(String projectId);

    /**
     * 根据项目id修改项目回款状态
     * @param projectId
     * @return
     */
    int updateReturnMoneyStatus(String projectId,String returnMoneyStatus);

    /**
     * 根据项目id修改项目阶段值
     * @param projectId
     * @return
     */
    int updateCurrentSpeed(String projectId,String currentSpeed);

    /**
     * 根据项目名称获取项目列表
     * @param projectName
     * @return
     */
    Project listProjectByProjectName(String projectName);

    /**
     * 根据id修改合同编号
     */
    int updateAgreementIdById(String id,String agreementId);

    /**
     * 根据id查询项目起止时间
     * @param id
     * @return
     */
    Project selectProjectStartEndTimeById(String id);

    /**
     * 根据项目编号模糊查询
     */
    List<Project> listProjectIdByPrefix(String prefix);

    /**
     * 根据客户名称获取项目名称和编号
     */
    List<Project> listProjectByCustomerName(String customerName);

    /**
     * 根据项目名称获取项目详情
     * @param projectName
     * @return
     */
    Project selectProjectByProjectName(String projectName);

    /**
     * 根据id修改已回款金额
     */
    int updateAlreadyReturnMoney(String id,BigDecimal alreadyReturnMoney);
}
